;;;; Defines the EVPL standard library.
;;;; Copyright (C) 2009 David J. Rosenbaum, email: davidjrosenbaum@comcast.net
;;;;
;;;; This program is free software: you can redistribute it and/or modify
;;;; it under the terms of the GNU General Public License as published by
;;;; the Free Software Foundation, under version 3 of the License.
;;;;
;;;; This program is distributed in the hope that it will be useful,
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;;; GNU General Public License for more details.
;;;;
;;;; You should have received a copy of the GNU General Public License
;;;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
;;;;
;;;; Copyright (C) 2009 David J. Rosenbaum
;;;; This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
;;;; This is free software, and you are welcome to redistribute it
;;;; under certain conditions; for details see COPYING.

(cl:in-package :evpl.identifiers)

(cl:defparameter |make-hash-table| (cl:lambda (bindings)
				(cl:let ((hash-table (cl:make-hash-table :test #'cl:equal)))
				  (cl:mapc (cl:lambda (binding)
					     (cl:setf (cl:gethash (cl:car binding) hash-table) (cl:cdr binding)))
					   bindings)
				  hash-table))
  "Returns a hash-table that maps the car of each binding in the list bindings to the corresponding cdr.")

(cl:defparameter |list| #'cl:list)
(cl:defparameter |cons| #'cl:cons)
(cl:defparameter |head| #'cl:car)
(cl:defparameter |tail| #'cl:cdr)
(cl:defparameter |map| #'cl:mapcar)
(cl:defparameter |print| #'cl:princ)
(cl:defparameter |format| #'cl:format)
(cl:defparameter |random| #'cl:random)
